package HanJiaHomeWork;

import LinkedList.ListNode;

import java.util.HashSet;
import java.util.Set;

/**   移除重复节点
 *编写代码，移除未排序链表中的重复节点。保留最开始出现的节点。
 *
 * 示例1:
 *
 *  输入：[1, 2, 3, 3, 2, 1]
 *  输出：[1, 2, 3]
 * 示例2:
 *
 *  输入：[1, 1, 1, 1, 2]
 *  输出：[1, 2]
 */
public class day9_2 {
    public ListNode removeDuplicateNodes(ListNode head) {
        Set<Integer> set = new HashSet<>();
        if(head == null){
            return null;
        }
        ListNode dummy1 = new ListNode(0);
        dummy1.next = head;//dummy1作为前驱节点
        ListNode dummy2 = dummy1;//让dummy2去动
        while(dummy2.next != null){
            if(!set.contains(dummy2.next.val)){
                set.add(dummy2.next.val);
                dummy2 = dummy2.next;
            }else{
                dummy2.next = dummy2.next.next;
            }
        }
        return dummy1.next;
    }

    public static void main(String[] args) {

    }
}
